Network or distributed storage systems are useful for providing a data repository for clients with higher capacity and faster access in order to meet rising demands. Many distributed storage systems consist of two kinds of nodes: servers (e.g., a conventional computer) and switches (e.g. Ethernet or InfiniBand). The switches implement transparent communication channels for the servers. A Distributed File System (DFS) may span multiple back-end storage servers to provide high capacity and fast access, while offering a unified interface to clients by appearing as a single server. Clients may name the file content using either the portable operating system interface (POSIX) file system naming format or a binary flat format.
A storage system may have one or more components to understand the file name and determine which server stores the file. That is, a storage system may have one or more components to map a file name to a server identity or location where the file resides. In a typical Network Attached System (NAS) or DFS, the mapping may be implemented by one or more metadata servers. Each file stored in the system should have an entry in the metadata server(s). For most key-value storage systems, a single-hop or multiple-hop distributed hash table (DHT) may be used. Each storage server may have to maintain the routing table, causing the complexity to be based on the number of storage servers and the number of files. When the system expands, a primary challenge to scalability includes maintaining the routing table in metadata servers or DHT nodes. Therefore, there is a need to build scalable distributed storage systems in order to overcome reliance on a centralized metadata server or indexer for data storage. Also, due to increasing storage demands, there is a need for storage systems with increased scalability.